package br.com.itc.componentes.titulo {
	
	import br.com.itc.componentes.containers.CanvasITC;
	import br.com.itc.componentes.input.Rotulo;
	
	import mx.controls.Image;
	import mx.events.FlexEvent;


	/**
	 * Define as proprieades de título usado por uma tabela.
	 */
	public class TituloBase	extends CanvasITC { 

//************
// Constantes:
//************

		public static const TEXTO_PADRAO:String = "Selecionar";
		
		protected static const ESPACAMENTO_TEXTO_LINHA:int = 10;

//************************
// Atributos: Propriedades
//************************

		[Bindable]
		[Embed ("../imagens/row.png")]
		protected var _caminhoIcone:Class;
		
		[Bindable]
		[Embed ("../imagens/srch_16.png")]
		protected var _caminhoIconePesquisa:Class;
		
		protected var _texto:String = TEXTO_PADRAO;
		protected var _deveAtualizarPosicaoLinha:Boolean = false;
		
		protected var _booTituloPesquisa:Boolean = false;

//******************
// Atributos: Campos
//******************

		private var _imagemIcone:Image;
		private var _labelTexto:Rotulo;
		private var _linha:LinhaView;

//**************
// Construtores:
//**************

		public function TituloBase() {
			addEventListener(FlexEvent.CREATION_COMPLETE, init);
		}

//*********
// Eventos:
//*********

		public function init(event : FlexEvent):void {
			atualizarPosicaoLinha();
			atualizarImagem();
		}

//********************
// Métodos Auxiliares:
//********************

		protected function atualizarPosicaoLinha():void {
			if (deveAtualizarPosicaoLinha && linha != null 
					&& labelTexto != null ) {
				var left:Number = labelTexto.x 
						+ labelTexto.measureText(texto).width
						+ ESPACAMENTO_TEXTO_LINHA; 

				linha.setStyle("left", left) ;
			}
			
		}
		protected function atualizarImagem():void {
			if (_booTituloPesquisa && _imagemIcone != null  ) {
				_imagemIcone.source = _caminhoIconePesquisa;
			}
		}

//********************************
// Getters e Setters: Propriedades
//********************************

		[Bindable]
		[Inspectable (category="Common")]
		public function get caminhoIcone():Class {
			return _caminhoIcone;			
		}
		public function set caminhoIcone(valor:Class):void {
			_caminhoIcone = valor;
		}

		[Bindable]
		[Inspectable (category="Common")]
		public function get texto():String {
			return _texto;
		}
		public function set texto(valor:String):void {
			_texto = valor.toUpperCase();
			atualizarPosicaoLinha();
		}

		public function get deveAtualizarPosicaoLinha():Boolean {
			return _deveAtualizarPosicaoLinha;
		}
		public function set deveAtualizarPosicaoLinha(
				valor:Boolean):void {
			_deveAtualizarPosicaoLinha = valor;
			atualizarPosicaoLinha();
		}

//**************************
// Getters e Setters: Campos
//**************************

		public function get imagemIcone():Image {
			return _imagemIcone;			
		}
		public function set imagemIcone(valor:Image):void {
			_imagemIcone = valor;
		}

		public function get labelTexto():Rotulo {
			return _labelTexto;			
		}
		public function set labelTexto(valor:Rotulo):void {
			_labelTexto = valor;
			atualizarPosicaoLinha();
		}

		public function get linha():LinhaView {
			return _linha;			
		}
		public function set linha(valor:LinhaView):void {
			_linha = valor;
			atualizarPosicaoLinha();
		}
		
		public function get booTituloPesquisa():Boolean {
			return _booTituloPesquisa;			
		}
		public function set booTituloPesquisa(valor:Boolean):void {
			_booTituloPesquisa = valor;
			atualizarImagem();
			
		}
		
	}
}